package com.os.feign;

import com.os.model.MetaDataInfo;
import com.os.result.Resp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author 风亦未止
 * @date 2023/5/3 17:37
 */
@FeignClient("metaServer")
public interface MetaDataService {

    /**
     *  元数据存储
     * @param metaDataInfo 元数据信息
     * @return
     */
    @PutMapping("/metaServer/")
    Resp put(@RequestBody MetaDataInfo metaDataInfo);

    /**
     * 元数据获取 - 根据对象名获取元数据
     * @param name
     * @return
     */
    @GetMapping("/metaServer/{name}")
    Resp get(@PathVariable("name") String name );


    /**
     * 元数据获取 - 根据版本对象名获取元数据
     * @param name
     * @param version
     * @return
     */
    @GetMapping("/metaServer/{name}/{version}")
    Resp getByVersion(@PathVariable("name") String name,
                      @PathVariable("version") Integer version);


    /**
     * 获取元数据所有的版本
     * @param name
     * @return
     */
    @GetMapping("/metaServer/version/{name}")
    Resp getAllVersion(@PathVariable("name") String name);
}
